package com.sun.test;

import java.util.Scanner;

public class Season {
    public static void main(String[] args) {
        /*
        * 1.输入一个数，判断是奇数还是偶数
        * */
        //创建扫描器对象
       /* Scanner sc=new Scanner(System.in);
        //提示用户输入一个数字
        System.out.println("请输入一个数:");
        //接收用户输入的数
        int number=sc.nextInt();
        //判断用户输入的数是奇数还是偶数
        if(number%2==0){//被2整除为偶数
            System.out.println(number+"是偶数");
        }else {
            System.out.println(number+"是奇数");
        }*/




        /*
        *2.根据成绩输出对应的等级，使用if多分支和switch语句分别实现。
        * a)A级   [90,100]
        * b)B级   [80,90)
        * C级   [70,80)
        * d)D级   [60,70)
        * e)E级   [0,60)
        * */
        //创建扫描器对象
        Scanner sc=new Scanner(System.in);
        //提示用户录入成绩
        //System.out.println("请录入分数:");
        //接收用户录入的成绩
       // int score=sc.nextInt();
        //根据分数，给出等级
        /*if(score>=90 && score<=100){
            System.out.println(score+"分，"+"A级");
        }else if (score>=80){
            System.out.println(score+"分，"+"B级");
        }else if (score >= 70){
            System.out.println(score+"分，"+"C级");
        }else if (score >= 60){
            System.out.println(score+"分，"+"D级");
        }else if (score >= 0){
            System.out.println(score+"分，"+"E级");
        }else {
            System.out.printf("成绩有误");
        }*/
        //声明一个变量用来存放等级
        /*String grade;
        //判断分数，给出等级
        if(score>=90){
            grade="A级";
        }else if (score >= 80){
            grade = "B级";
        }else if(score >=70){
            grade="C级";
        }else if (score >= 60){
            grade="D级";
        }else {
            grade="E级";
        }
        //输出等级
        System.out.println(score+"分,"+grade);*/
        //方式二:采用switch实现成绩等级判断
       /* String grade;
        switch (score/10){
            case 10:
            case 9:
                grade="A级";
                break;
            case 8:
                grade="B级";
                break;
            case 7:
                grade="C级";
                break;
            case 6:
                grade="D级";
                break;
            default:
                grade="E级";
        }
        //输出等级
        System.out.println(score+"分，"+grade);*/



        /*
        * 3.根据月份，输出对应的季节，并输出至少两个描述该季节的成语和活动。
        * 3,4,5 输出：春季；输入：6,7,8 ，输出：夏季；输入：9,10,11 秋季；输出：12,1,2 冬季
        * */
        //用switch实现
       /* System.out.println("请输入月份(1-12):");
        //接收用户输入的月份
        int month=sc.nextInt();
        //声明一个变量，存放描述该季节的成语和活动
        String description;
        //根据月份，给出季节
       switch (month){
            case 3:
            case 4:
            case 5:
                description="春天-春暖花开 春意盎然-植树 踏青";
                break;
            case 6:
            case 7:
            case 8:
                description="夏天-夏日炎炎  夏雨雨人-游泳  吃雪糕";
                break;
            case 9:
            case 10:
            case 11:
                description="秋天-秋高气爽 秋风落叶- 秋收  送秋波";
                break;
            case 12:
            case 1:
            case 2:
                description="冬天-寒冬腊月 白雪皑皑 -滑雪  溜冰";
                break;
            default:
                description="输入的月份有误！";
        }
        System.out.println(month+"月，"+description);


        //方式二: 采用if多分支实现
        if(month<1||month>12){
            System.out.println("输入的月份有误,没有对应的季节");
        }else if (month>=3 && month<=5) {
            System.out.println("春天");
        }else if (month >6 && month<=8) {
            System.out.println("夏天");
        }else if (month >=9 && month<=11) {
            System.out.println("秋天");
        }else{
            System.out.println("冬天");
        }*/


        /*
        * 4.判断一个数是否是素数
        * 素数是指除了1和它本身以外,不能被任何整数整除的数
        * 该代码的基本思路为:如果m不能被2~它的平方根中的任一数整除,m必定是素数
        * */
      /*  System.out.println("请输入一个数:");
        //接收用户输入的数字
        int n=sc.nextInt();
        //判断该数字是否为素数
        boolean flag=true;
        if(n==1){
            flag=false;
        }else {
            for (int i = 2; i < n; i++) {
                if(n%i==0){
                    flag=false;
                    break;
                }
            }
        }
        //输出结果
        if(flag){
            System.out.println(n+"是质数");
        }else {
            System.out.println(n+"不是素数");
        }*/



        /*
        * 5.从键盘输入一个班5个学生的分数，求和并输出。
        * */
        //声明一个变量用来存放各个学生的分数
       /* int fraction;
        //声明一个变量存放5个学生的总分
        int sum=0;
        //录入学生的成绩
        for (int i = 0; i < 5; i++) {
            System.out.println("请输入第"+(i+1)+"个学生的分数:");
            //接收用户输入的分数
            fraction=sc.nextInt();
            //计算学生的总成绩
            sum+=fraction;
        }
        //输出分数
        System.out.println("5个学生的总分是:"+sum);
*/



        /*
        * 6.从键盘输入某个十进制整数数，转换成对应的二进制整数并输出。
        * */
       /*  int num2=6;
        //转换
        int num=num2;
        String str="";
       do {
            //除2得到商
            int div=num/2;
            //得到余数作为二进制
            int mod=num%2;
            str=mod+str;
            //商作为除数
            num=div;
        }while (num !=0);//被除数不是0
        //输出二进制
        System.out.println(num2+"=======>"+str);

        while (num!=0){
            //得到商
            int div = num / 2;
            //得到余数
            int mod = num % 2;
            str=mod+str;//将余数存起来
            num=div;//被除数变为商
        }
        System.out.println(num2+"=======>"+str);*/



        /*
        * 1.根据考试成绩输出对应的礼物，90分以上爸爸给买电脑，80分以上爸爸给买手机，
        *  60分以上爸爸请吃一顿大餐，60分以下爸爸给买学习资料。
        *  要求：该题使用多重if完成
        * */


       /*  System.out.println("请输入考试分数:");
        //接收输入的考试分数
        int score=sc.nextInt();
        //声明一个变量用来存放爸爸买的礼物
        String gift;
        //根据分数，领取对应的礼物
       if(score>=90){
            gift="买电脑";
        }else if(score>=80){
            gift="买手机";
        }else if(score>60){
            gift="吃大餐";
        }else{
            gift="买学习资料";
        }
        //输出买的礼物
        System.out.println(score+"分，"+gift);
        //方式2:采用switch分支实现
        switch (score/10){
            case 10:
            case 9:
                gift="买电脑";
                break;
            case 8:
                gift="买手机";
                break;
            case 7:
            case 6:
                gift="吃大餐";
                break;
            default:
                gift="买学习资料";
        }
        //输出买的礼物
        System.out.println(score+"分，"+gift);*/


        /*
        * 7.请根据英文单词的第一个字母判断星期几，如果第一个字母是一样的，
        * 则继续判断第二个字母。例如如果第一个字母是S,则继续判断第二个字母，如果第二个字母是a,
        * 则输出2.出“星期六”。星期的英文单词如下表所示。
        * 星期一 	星期二	星期三	    星期四	    星期五	 星期六 	    星期日
        * Monday	Tuesday	Wednesday	Thursday	Friday	Saturday	Sunday
        * */
        //声明变量存放2个英文字母
       /* char i,j;
        //提示用户输入第一个英文字母
        System.out.println("请输入第一个英文字母:");
        //接收用户输入的第一个英文字母
        String ch=sc.next().toLowerCase();
        //转成字符串
        i=ch.charAt(0);
        switch (i){
            case 'm':
                System.out.println("星期一=====>Monday");
                break;
            case 't':
                //提示用户输入第二个英文字母
                System.out.println("请输入第二个字母:");
                //接收用户输入的英文字母
                ch=sc.next().toLowerCase();
                j=ch.charAt(0);
                //判断
                if (j == 'u') {
                    System.out.println("星期二=====>Tuesday");
                }else if (j == 'h'){
                    System.out.println("星期四=====>Thursday");
                }else{
                    System.out.println("字母有误");
                }
                break;
            case 'w':
                System.out.println("星期三=====>Wednesday");
                break;
            case 'f':
                System.out.println("星期五=====>Friday");
                break;
            case 's':
                //提示用户输入第二个英文字母
                System.out.println("请输入第二个英文字母:");
                ch=sc.next().toLowerCase();
                //转成字符串
                j=ch.charAt(0);
                //判断
                if(j=='a'){
                    System.out.println("星期六=====>Saturday");
                }else if(j=='u'){
                    System.out.println("星期天=====>Sunday");
                }else {
                    System.out.println("输入字母有误");
                }
                break;
            default:
                System.out.println("输入的字母不在可选范围内");
        }*/




        /*
        * 8.输入一批整数，使用循环求出最大值与最小值，输入0时结束。
        * */
        //声明一个变量存放输入的整数
        /*int numbers=1;
        //声明两个变量，分别存放最大值和最小值
        int max=0,min=0;
        //提示用户输入第一个数字
        System.out.println("请输入第一个数字:");
        //接收用户输入的第一个数字
        numbers=sc.nextInt();
        //假定输入的第一个数字既是最大值又是最小值
        max=numbers;
        min=numbers;
        //依次输入其它数字，并判断是否是最大值和最小值
        for (int k = 2; numbers !=0 ; k++) {
            System.out.println("请输入第"+k+"个数:");
            numbers= sc.nextInt();
           if (numbers != 0) {
               //判断是否是最大值
               if(numbers>max){//最大值
                   max=numbers;
               }
               if(numbers<min){//最小值
                   min=numbers;
               }
           }
        }
        //方式2
        int k=2;
        while (numbers!=0){
            System.out.println("请输入第"+k+"个数:");
            numbers= sc.nextInt();
            if (numbers != 0) {
                //判断是否是最大值
                if(numbers>max){//最大值
                    max=numbers;
                }
                if(numbers<min){//最小值
                    min=numbers;
                }
            }
            k++;
        }
        //方式3
        do{
            System.out.println("请输入第"+k+"个数:");
            numbers= sc.nextInt();
            if (numbers != 0) {
                //判断是否是最大值
                if(numbers>max){//最大值
                    max=numbers;
                }
                if(numbers<min){//最小值
                    min=numbers;
                }
            }
            k++;
        }while (numbers!=0);
        //输出最大值和最小值
        System.out.println("最大值是:===>"+max);
        System.out.println("最小值是:===>"+min);*/



        /*
        * 9.给20块钱买可乐，每瓶可乐3块钱，喝完之后退瓶子可以换回1块钱，问最多可以喝到多少瓶可乐。
        * */
       //声明变量存放购买可乐的钱
       /* int money=20;
        //声明变量存放可乐的定价
        int price=3;
        //声明变量存放每次购买可乐的瓶数
        int temp=0;
        //声明变量存放每次购买可乐后剩下的钱
        int change=0;
        //声明变量存放购买的总可乐瓶数
        int sum=0;
        //如果钱大于可乐价格
        while (money>price){
            //购买可乐,得到瓶数
            temp=money/price;
            //总可乐瓶数增加,退瓶子换1块钱
            sum+=temp;
            //计算购买可乐后剩下的钱
            change=money%price;
            //兑换可乐瓶子，计算剩余的总钱数
            money=temp+change;
        }
        do{
            //购买可乐,卖多少瓶
            temp=money/price;
            //得到瓶数
            sum+=temp;
            //购买可乐后剩下的钱
            change=money%price;
            //兑换瓶子，计算剩下的钱
            money=temp+change;
        }while (money>price);
        for (int i = 0; money>price; i++) {
            //购买可乐
            temp=money/price;
            //得到购买的瓶数
            sum+=temp;
            //计算购买可乐后剩下的钱
            change=money%price;
            //兑换瓶子，计算剩下的钱
            money=temp+change;
        }
        //输出结果
        System.out.println("最多可以喝到"+sum+"瓶可乐");*/




        /*
        * 5.从键盘输入某个十进制小数，转换成对应的二进制小数并输出。
        * （查询十进制小数转换成二进制小数的算法，使用循环来实现。最多保留小数位后7位数字即可）
        * */
        //提示用户输入一个十进制小数
        System.out.println("请输入一个十进制小数:");
        //接收用户输入的十进制小数
        double number=sc.nextDouble();
        //转换
        double mul=number;
        StringBuffer sb=new StringBuffer("0.");
        //定义一个计时器
        int count = 0;
        do{
            //乘以2得到乘积
            double result=mul*2;
            //从积中取出整数部分作为二进制位
            int i=(int)result;
            sb.append(i);
            //计数
            count++;
            //判断是否够7位
            if(count==7){
                break;
            }
            //从积中取出小数部分作为下一次的乘数
            mul=result-i;
        }while (mul!=0);//判断乘数是否为0
        //方式2
        while (mul!=0){
            //乘以2得到乘积
            double result=mul * 2;
            //从积中取出整数部分作为二进制位
            int i=(int)result;
            sb.append(i);
            //计数
            count++;
            //判断是否够7位
            if (count == 7) {
                break;
            }
            //从乘积中取出小数部分作为下一次的乘除
            mul = result - i;
        }
        for (int i = 0; mul!=0; i++) {
            //乘以2得到乘积
            double result = mul * 2;
            //从乘积中取出整数部分作为二进制位
            int j=(int)result;
            sb.append(j);
            //判断是否够7位
            if(i==7){
                break;
            }
            //从乘积取出小数部分作为下一次的乘数
            mul=result-j;
        }
        //输出十进制小数和二进制小数
        System.out.println("十进制小数:"+number+"======>\t二进制小数:"+mul);
    }
}
